package io;//: io/DirList.java
// Display a directory listing using regular expressions.
// {Args: "D.*\.java"}
// 怎样显示符合条件的File对象

import java.util.regex.*;
import java.io.*;
import java.util.*;


public class DirList {
  public static void main(String[] args) {
    File path = new File("./src/main/java/io");
    String[] list;
    if (args.length == 0) {
      list = path.list();
    } else {
      /**
       * 策略模式
       *  FilenameFilter 提供算法
       */
      list = path.list(new DirFilter(args[0]));
    }
    Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
    for (String dirItem : list)
      System.out.println(dirItem);
  }
}

class DirFilter implements FilenameFilter {
  private Pattern pattern;

  public DirFilter(String regex) {
    pattern = Pattern.compile(regex);
  }

  public boolean accept(File dir, String name) {
    return pattern.matcher(name).matches();
  }
} /* Output:
DirectoryDemo.java
DirList.java
DirList2.java
DirList3.java
*///:~
